﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Sistema_Totem.Logica.Clases;
using AjaxControlToolkit;

namespace Sistema_Totem.Vista.Requerimientos
{
    public partial class AgregarRequerimiento2 : System.Web.UI.Page
    {
        
        List<String> NombreContenidos = new List<String>();
        private int idProyecto = 1;
        private List<String> listaCont = new List<String>();
        private List<String> dataAgregada = new List<String>();
        
        protected void Page_Load(object sender, EventArgs e)
        {
            try{
            //{
            //    if (Session["tipo_usuario"].ToString() != "Analista" || Session["tipo_usuario"].ToString() != "Gerente de Proyecto")
            //    {
            //        Response.Redirect("Login1.aspx");
            //    }

            //    Proyecto proy = (Proyecto)Session["objProyecto"];

            //    if (proy.Nombre.ToString() != null && proy.IdProyecto != null)
            //    {
            //        idProyecto = proy.IdProyecto;
            //        nomProyecto.Text = proy.Nombre;
            //        codProyecto.Text = proy.Codigos; 
            //    }
            }
            catch (NullReferenceException)
            {
                Response.Redirect("~/Vista/Login/Login1.aspx");
            }
            
            int i = 0;
            List<String> tipoElemento = new List<String>();
            List<String> listaRecibo = (List<String>)(Session["Data"]);
            List<int> listaReciboID = (List<int>)(Session["DataID"]);
            tipoElemento = BuscarWebControls(listaRecibo);
            
            foreach (String item in listaRecibo)
            {
                CreaControl(tipoElemento[i],listaRecibo[i],listaReciboID[i]);
                i++;
            } 
  
            BotonGuardar.Attributes.Add("onclick", "return confirm('¿Seguro que desea guardar los cambios realizados?');");
        }

        public List<String> BuscarWebControls(List<String> listaNombreElemento)
        {
            List<String> listaWebControls = new List<String>();
            PlantillaRequerimiento plantillita = new PlantillaRequerimiento();
            Session["Controles"] = listaCont;  
            for (int i = 0; i < listaNombreElemento.Count(); i++)
            {
                listaWebControls.Add(plantillita.BuscarWebControls(listaNombreElemento[i]));
            }
            return listaWebControls;
        }

        public void CreaControl(String tipo, String nombreElemento, int IdElemento)
        {
            AccordionPane ap1 = new AccordionPane();
            List<String> ListaC = new List<String>();
            ListaC = (List<String>)(Session["Controles"]);
            switch (tipo)
            {
                case "TextBox":
                    TextBox textBoxTotem = new TextBox();
                    textBoxTotem.ID = nombreElemento;
            
                    ap1.ID = nombreElemento;
                    ap1.HeaderContainer.Controls.Add(new LiteralControl(nombreElemento));
                    ap1.ContentContainer.Controls.Add(textBoxTotem);
                    AccordionCtrl.Panes.Add(ap1);
                    ListaC.Add(textBoxTotem.ID);
                    break;

                case "DropDownList":
                    ListItem item;
                    int i = 1;
                    DropDownList dropdownlistTotem = new DropDownList();
                    dropdownlistTotem.ID = nombreElemento;
                    List<String> ListaHijos = new List<string>();
                    PlantillaRequerimiento plantillaR = new PlantillaRequerimiento();
                    ListaHijos = plantillaR.RecuperarHijos(IdElemento);
                    foreach (String ciclo in ListaHijos)
                    {
                        item = new ListItem(ciclo,i.ToString());
                        i++;
                        dropdownlistTotem.Items.Add(item);
                    }
                    ap1.ID = nombreElemento;
                    ap1.HeaderContainer.Controls.Add(new LiteralControl(nombreElemento));
                    ap1.ContentContainer.Controls.Add(dropdownlistTotem);
                    ListaC.Add(dropdownlistTotem.ID);
                    AccordionCtrl.Panes.Add(ap1);
                    break;

                case "textarea":
                    TextBox textAreaTotem = new TextBox();
                    textAreaTotem.ID = nombreElemento;
                    textAreaTotem.Height = 150;
                    textAreaTotem.Width = 463;
                    textAreaTotem.TextMode = TextBoxMode.MultiLine;

                    ap1.ID = nombreElemento;
                    ap1.HeaderContainer.Controls.Add(new LiteralControl(nombreElemento));
                    ap1.ContentContainer.Controls.Add(textAreaTotem);
                    ListaC.Add(textAreaTotem.ID);
                    AccordionCtrl.Panes.Add(ap1);
                    break;

                case "RadioButtonList":
                    RadioButtonList radioButtonListTotem = new RadioButtonList();
                    radioButtonListTotem.ID = nombreElemento;
                    break;

                case "CheckBoxList":
                    CheckBoxList checkBoxListTotem = new CheckBoxList();
                    checkBoxListTotem.ID = nombreElemento;
                    break;

                case "FileUpload":
                    FileUpload fileUploadTotem = new FileUpload();
                    fileUploadTotem.ID = nombreElemento;
                    break;

            }
            Session["Controles"] = ListaC;
        }
        
        protected void extraerValores()
        {
            List<String> ListaC = new List<String>();
            ListaC = (List<String>)(Session["Controles"]);
            int i = 0;
            List<String> resultados = new List<String>();
            foreach (AjaxControlToolkit.AccordionPane item in AccordionCtrl.Panes)
            {
                Object O = new Control();
                O = item.ContentContainer.FindControl(ListaC[i]);
                if (O is TextBox){
                    TextBox T = O as TextBox;
                    resultados.Add(T.Text);
                    i++;
                }
                else if(O is DropDownList){
                    DropDownList D = O as DropDownList;
                    resultados.Add(D.SelectedItem.ToString());
                    i++;
                }
            }

            Requerimiento agregable = new Requerimiento();
            List<int> listaReciboID = (List<int>)(Session["DataID"]);
            agregable.AgregarRequerimiento(idProyecto, resultados, listaReciboID);
        }
        

        protected void BotonAnterior_Click(object sender, EventArgs e)
        {
            Response.Redirect("~/Vista/Requerimientos/AgregarRequerimiento.aspx");
        }

        protected void BotonGuardar_Click(object sender, EventArgs e)
        {
            extraerValores();
            Response.Redirect("~/index.aspx");

        }
    }
}